package main

import (
	"fmt"
	"io/ioutil"
)

// switch 特点:: 自动 break ，如果想让它往下漏 使用 fallthrought
// switch 可以没有 条件（case 需要有）

func eval(a, b int, op string) int {
	var result int
	switch op {
	case "+":
		result = a + b
	case "-":
		result = a - b
	case "*":
		result = a * b
	case "/":
		result = a / b
	default:
		panic("unsupported operator:" + op)
	}
	return result
}
func grade(score int) string {
	g := ""
	switch {
	case score < 0 || score > 100:
		// 中断程序的执行，后边的不执行了
		panic(fmt.Sprintf("Wrong score： %d", score))
	case score < 60:
		g = "F"
	case score < 80:
		g = "C"
	case score < 90:
		g = "B"
	case score < 100:
		g = "A"
	}

	return g
}
func main() {
	const filename = "abc.txt"
	// contents byte[]
	contents, err := ioutil.ReadFile(filename)

	// if 不需要 括号
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Printf("%s\n", contents)
	}

	// 条件里放语句（可以声明、赋值）作用域仅限 if else if 和 else 中，以;隔开, 结尾处必须是一个 bool 表达式
	if contents, err := ioutil.ReadFile(filename); err != nil {
		fmt.Println(err)
	} else {
		fmt.Printf("%s\n", contents)
	}

	fmt.Println(eval(1, 2, "+"))
	fmt.Println(
		grade(0),
		grade(0),
		grade(100),
		grade(12),
		grade(23),
		grade(100),
		grade(90),
	)

}
